        Compiler A                              Compiler B
        ==========                              ==========
	.syntax unified		      <
	.cpu cortex-m0				.cpu cortex-m0
	.fpu softvfp		      <
	.eabi_attribute 20, 1			.eabi_attribute 20, 1
	.eabi_attribute 21, 1			.eabi_attribute 21, 1
	.eabi_attribute 23, 3			.eabi_attribute 23, 3
	.eabi_attribute 24, 1			.eabi_attribute 24, 1
	.eabi_attribute 25, 1			.eabi_attribute 25, 1
	.eabi_attribute 26, 1			.eabi_attribute 26, 1
	.eabi_attribute 30, 1			.eabi_attribute 30, 1
	.eabi_attribute 34, 0			.eabi_attribute 34, 0
	.eabi_attribute 18, 4			.eabi_attribute 18, 4
	.thumb			      <
	.syntax unified		      <
	.file	"timer.c"			.file	"timer.c"
	.text					.text
.Ltext0:				.Ltext0:
	.cfi_sections	.debug_frame		.cfi_sections	.debug_frame
	.align	2		      |		.align	1
	.global	timer_task			.global	timer_task
				      >		.syntax unified
	.code	16				.code	16
	.thumb_func				.thumb_func
				      >		.fpu softvfp
	.type	timer_task, %function		.type	timer_task, %function
timer_task:				timer_task:
.LFB2:					.LFB2:
	.file 1 "timer.c"			.file 1 "timer.c"
	.loc 1 62 0				.loc 1 62 0
	.cfi_startproc				.cfi_startproc
				      >		@ Volatile: function does not
	@ args = 0, pretend = 0, fram		@ args = 0, pretend = 0, fram
	@ frame_needed = 0, uses_anon		@ frame_needed = 0, uses_anon
.LVL0:					.LVL0:
	push	{r4, r5, r6, r7, lr}		push	{r4, r5, r6, r7, lr}
	.cfi_def_cfa_offset 20			.cfi_def_cfa_offset 20
	.cfi_offset 4, -20			.cfi_offset 4, -20
	.cfi_offset 5, -16			.cfi_offset 5, -16
	.cfi_offset 6, -12			.cfi_offset 6, -12
	.cfi_offset 7, -8			.cfi_offset 7, -8
	.cfi_offset 14, -4			.cfi_offset 14, -4
	mov	r7, r10		      |		mov	lr, r10
	mov	r6, r9		      |		mov	r7, r9
	mov	r5, r8		      |		mov	r6, r8
	push	{r5, r6, r7}	      |		push	{r6, r7, lr}
	.cfi_def_cfa_offset 32			.cfi_def_cfa_offset 32
	.cfi_offset 8, -32			.cfi_offset 8, -32
	.cfi_offset 9, -28			.cfi_offset 9, -28
	.cfi_offset 10, -24			.cfi_offset 10, -24
	sub	sp, sp, #32			sub	sp, sp, #32
	.cfi_def_cfa_offset 64			.cfi_def_cfa_offset 64
	.loc 1 65 0				.loc 1 65 0
	movs	r3, #1				movs	r3, #1
	ldr	r2, .L20	      |		ldr	r2, .L22
	str	r3, [r2]			str	r3, [r2]
	.loc 1 66 0				.loc 1 66 0
	movs	r2, #0				movs	r2, #0
	ldr	r1, .L20+4	      |		ldr	r1, .L22+4
	str	r2, [r1]			str	r2, [r1]
	.loc 1 67 0				.loc 1 67 0
	ldr	r1, .L20+8	      |		ldr	r1, .L22+8
	str	r2, [r1]			str	r2, [r1]
	.loc 1 68 0				.loc 1 68 0
				      >		ldr	r2, .L22+12
	movs	r1, #4				movs	r1, #4
	ldr	r2, .L20+12	      <
	str	r1, [r2]			str	r1, [r2]
	.loc 1 69 0				.loc 1 69 0
	ldr	r2, .L20+16	      |		ldr	r2, .L22+16
	str	r3, [r2]			str	r3, [r2]
	.loc 1 70 0				.loc 1 70 0
	ldr	r1, .L20+20	      |		ldr	r2, .L22+20
	ldr	r2, .L20+24	      |		ldr	r1, .L22+24
	str	r1, [r2]			str	r1, [r2]
	.loc 1 71 0				.loc 1 71 0
	ldr	r2, .L20+28	      |		ldr	r2, .L22+28
	str	r3, [r2]			str	r3, [r2]
	.loc 1 72 0				.loc 1 72 0
				      >		ldr	r2, .L22+32
	movs	r1, #128			movs	r1, #128
	lsls	r1, r1, #9			lsls	r1, r1, #9
	ldr	r2, .L20+32	      <
	str	r1, [r2]			str	r1, [r2]
	.loc 1 73 0				.loc 1 73 0
	ldr	r2, .L20+36	      |		ldr	r2, .L22+36
	str	r3, [r2]			str	r3, [r2]
	.loc 1 75 0				.loc 1 75 0
	movs	r0, #9				movs	r0, #9
.LVL1:					.LVL1:
	bl	connect				bl	connect
.LVL2:					.LVL2:
	.loc 1 76 0				.loc 1 76 0
	movs	r0, #9				movs	r0, #9
	bl	enable_irq			bl	enable_irq
.LVL3:					.LVL3:
	.loc 1 84 0				.loc 1 84 0
	ldr	r3, .L20+40	      |		ldr	r3, .L22+40
	mov	r8, r3		      |		mov	r10, r3
.LBB6:					.LBB6:
.LBB7:					.LBB7:
	.loc 1 27 0				.loc 1 27 0
	movs	r7, r3		      |		movs	r5, r3
.L2:				      |		b	.L2
				      >	.L4:
.LBE7:					.LBE7:
.LBE6:					.LBE6:
				      >		.loc 1 83 0
				      >		ldr	r3, .L22+44
				      >		ldr	r3, [r3]
				      >		cmp	r3, #0
				      >		bne	.L20
				      >	.L6:
				      >		.loc 1 88 0
				      >		movs	r0, #9
				      >		bl	clear_pending
				      >	.LVL4:
				      >		.loc 1 89 0
				      >		movs	r0, #9
				      >		bl	enable_irq
				      >	.LVL5:
				      >	.L2:
	.loc 1 79 0				.loc 1 79 0
	add	r5, sp, #16	      |		add	r4, sp, #16
	movs	r1, r5		      |		movs	r1, r4
	ldr	r0, .L20+44	      |		ldr	r0, .L22+48
	bl	receive				bl	receive
.LVL4:				      |	.LVL6:
	.loc 1 81 0				.loc 1 81 0
	ldrh	r3, [r5]	      |		ldrh	r3, [r4]
	cmp	r3, #1				cmp	r3, #1
	beq	.L4				beq	.L4
	cmp	r3, #3				cmp	r3, #3
	beq	.L5				beq	.L5
	b	.L19		      |		.loc 1 97 0
.L4:				      |		ldr	r0, .L22+52
	.loc 1 83 0		      |		bl	panic
	ldr	r3, .L20+48	      |	.LVL7:
	ldr	r3, [r3]	      |		b	.L2
	cmp	r3, #0		      |	.L20:
	beq	.L6		      <
	.loc 1 84 0				.loc 1 84 0
	mov	r3, r8		      |		mov	r3, r10
	ldr	r3, [r3]			ldr	r3, [r3]
	adds	r3, r3, #5			adds	r3, r3, #5
	mov	r2, r8		      |		mov	r2, r10
	str	r3, [r2]			str	r3, [r2]
	.loc 1 85 0				.loc 1 85 0
				      >		ldr	r3, .L22+44
	movs	r2, #0				movs	r2, #0
	ldr	r3, .L20+48	      <
	str	r2, [r3]			str	r2, [r3]
.LVL5:				      |	.LVL8:
	ldr	r5, .L20+52	      |		ldr	r4, .L22+56
	movs	r3, #48				movs	r3, #48
	mov	r9, r3		      |		mov	r8, r3
	add	r9, r9, r5	      |		add	r8, r8, r4
.LBB9:					.LBB9:
.LBB8:					.LBB8:
	.loc 1 28 0				.loc 1 28 0
	subs	r3, r3, #44			subs	r3, r3, #44
	mov	r10, r3		      |		mov	r9, r3
.LVL6:				      |		b	.L9
				      >	.LVL9:
				      >	.L8:
				      >		.loc 1 35 0
				      >		movs	r3, #1
				      >		rsbs	r3, r3, #0
				      >		str	r3, [r4]
				      >	.L7:
				      >		adds	r4, r4, #12
				      >		.loc 1 26 0
				      >		cmp	r4, r8
				      >		beq	.L6
.L9:					.L9:
	.loc 1 27 0				.loc 1 27 0
	ldr	r0, [r5]	      |		ldr	r0, [r4]
	cmp	r0, #0				cmp	r0, #0
	blt	.L7				blt	.L7
	ldr	r3, [r5, #8]	      |		ldr	r3, [r4, #8]
	ldr	r2, [r7]	      |		ldr	r2, [r5]
	cmp	r3, r2				cmp	r3, r2
	bhi	.L7				bhi	.L7
	.loc 1 28 0				.loc 1 28 0
	mov	r2, sp				mov	r2, sp
	mov	r1, r10		      |		mov	r1, r9
	strh	r1, [r2]			strh	r1, [r2]
	.loc 1 29 0				.loc 1 29 0
	str	r3, [sp, #4]			str	r3, [sp, #4]
	.loc 1 30 0				.loc 1 30 0
	mov	r1, sp				mov	r1, sp
	bl	send				bl	send
.LVL7:				      |	.LVL10:
	.loc 1 32 0				.loc 1 32 0
	ldr	r3, [r5, #4]	      |		ldr	r3, [r4, #4]
	cmp	r3, #0				cmp	r3, #0
	beq	.L8				beq	.L8
	.loc 1 33 0				.loc 1 33 0
	ldr	r2, [r5, #8]	      |		ldr	r2, [r4, #8]
	mov	ip, r2				mov	ip, r2
	add	r3, r3, ip			add	r3, r3, ip
	str	r3, [r5, #8]	      |		str	r3, [r4, #8]
	b	.L7				b	.L7
.L8:				      |	.L5:
	.loc 1 35 0		      <
	movs	r3, #1		      <
	rsbs	r3, r3, #0	      <
	str	r3, [r5]	      <
.L7:				      <
	adds	r5, r5, #12	      <
	.loc 1 26 0		      <
	cmp	r5, r9		      <
	bne	.L9		      <
.L6:				      <
.LBE8:					.LBE8:
.LBE9:					.LBE9:
	.loc 1 88 0		      <
	movs	r0, #9		      <
	bl	clear_pending	      <
.LVL8:				      <
	.loc 1 89 0		      <
	movs	r0, #9		      <
	bl	enable_irq	      <
.LVL9:				      <
	.loc 1 90 0		      <
	b	.L2		      <
.L5:				      <
	.loc 1 93 0				.loc 1 93 0
	add	r3, sp, #16			add	r3, sp, #16
	movs	r1, #2				movs	r1, #2
	ldrsh	r2, [r3, r1]			ldrsh	r2, [r3, r1]
	mov	r9, r2		      |		mov	r8, r2
	ldr	r5, [sp, #20]	      |		ldr	r4, [sp, #20]
	ldr	r6, [sp, #24]	      |		ldr	r7, [sp, #24]
.LVL10:				      |	.LVL11:
.LBB10:					.LBB10:
.LBB11:					.LBB11:
	.loc 1 44 0				.loc 1 44 0
	ldr	r3, .L20+52	      |		ldr	r3, .L22+56
	ldr	r3, [r3]			ldr	r3, [r3]
	cmp	r3, #0				cmp	r3, #0
	blt	.L15				blt	.L15
.LVL11:				      |	.LVL12:
	ldr	r3, .L20+52	      |		ldr	r3, .L22+56
	ldr	r3, [r3, #12]			ldr	r3, [r3, #12]
	cmp	r3, #0				cmp	r3, #0
	blt	.L16				blt	.L16
.LVL12:				      |	.LVL13:
	ldr	r3, .L20+52	      |		ldr	r3, .L22+56
	ldr	r3, [r3, #24]			ldr	r3, [r3, #24]
	cmp	r3, #0				cmp	r3, #0
	blt	.L17				blt	.L17
.LVL13:				      |	.LVL14:
	ldr	r3, .L20+52	      |		ldr	r3, .L22+56
	ldr	r3, [r3, #36]			ldr	r3, [r3, #36]
	.loc 1 45 0				.loc 1 45 0
	movs	r2, #3				movs	r2, #3
.LVL14:				      |	.LVL15:
	.loc 1 44 0				.loc 1 44 0
	cmp	r3, #0				cmp	r3, #0
	blt	.L11				blt	.L11
	b	.L13		      |		.loc 1 48 0
.LVL15:				      |		ldr	r0, .L22+60
.L15:				      |		bl	panic
	.loc 1 42 0		      <
	movs	r2, #0		      <
.LVL16:					.LVL16:
				      >		movs	r2, #4
				      >	.LVL17:
.L11:					.L11:
	.loc 1 50 0				.loc 1 50 0
	ldr	r0, .L20+52	      |		ldr	r1, .L22+56
	lsls	r3, r2, #1			lsls	r3, r2, #1
	adds	r1, r3, r2	      |		adds	r0, r3, r2
	lsls	r1, r1, #2	      |		lsls	r0, r0, #2
	mov	r4, r9		      |		mov	r6, r8
	str	r4, [r1, r0]	      |		str	r6, [r0, r1]
	.loc 1 51 0				.loc 1 51 0
	ldr	r1, .L20+40	      |		ldr	r0, .L22+40
	ldr	r1, [r1]	      |		ldr	r0, [r0]
	adds	r3, r3, r2			adds	r3, r3, r2
	lsls	r3, r3, #2			lsls	r3, r3, #2
	adds	r3, r0, r3	      |		adds	r3, r1, r3
	adds	r1, r1, r5	      |		adds	r0, r0, r4
	str	r1, [r3, #8]	      |		str	r0, [r3, #8]
	.loc 1 52 0				.loc 1 52 0
	cmp	r6, #0		      |		cmp	r7, #0
	beq	.L14		      |		bne	.L21
.LVL17:				      |	.LVL18:
	.loc 1 53 0		      <
	lsls	r3, r2, #1	      <
	adds	r2, r3, r2	      <
	lsls	r2, r2, #2	      <
	adds	r2, r0, r2	      <
	str	r5, [r2, #4]	      <
	b	.L2		      <
.L14:				      <
	.loc 1 55 0				.loc 1 55 0
	lsls	r3, r2, #1			lsls	r3, r2, #1
	adds	r2, r3, r2			adds	r2, r3, r2
	lsls	r2, r2, #2			lsls	r2, r2, #2
	ldr	r3, .L20+52	      |		ldr	r3, .L22+56
	adds	r2, r3, r2			adds	r2, r3, r2
	movs	r3, #0				movs	r3, #0
	str	r3, [r2, #4]			str	r3, [r2, #4]
	b	.L2				b	.L2
.LVL18:				      <
.L19:				      <
.LBE11:				      <
.LBE10:				      <
	.loc 1 97 0		      <
	ldr	r0, .L20+56	      <
	bl	panic		      <
.LVL19:					.LVL19:
	b	.L2		      |	.L15:
				      >		.loc 1 42 0
				      >		movs	r2, #0
.LVL20:					.LVL20:
				      >		b	.L11
				      >	.LVL21:
				      >	.L21:
				      >		.loc 1 53 0
				      >		lsls	r3, r2, #1
				      >		adds	r2, r3, r2
				      >		lsls	r2, r2, #2
				      >		adds	r2, r1, r2
				      >		str	r4, [r2, #4]
				      >		b	.L2
				      >	.LVL22:
.L16:					.L16:
.LBB13:				      <
.LBB12:				      <
	.loc 1 45 0				.loc 1 45 0
	movs	r2, #1				movs	r2, #1
.LVL21:				      <
	b	.L11		      <
.LVL22:				      <
.L17:				      <
	movs	r2, #2		      <
.LVL23:					.LVL23:
	b	.L11				b	.L11
.LVL24:					.LVL24:
.L13:				      |	.L17:
	.loc 1 48 0		      |		movs	r2, #2
	ldr	r0, .L20+60	      <
	bl	panic		      <
.LVL25:					.LVL25:
	movs	r2, #4		      <
	b	.L11				b	.L11
.L21:				      |	.L23:
	.align	2				.align	2
.L20:				      |	.L22:
	.word	1073778692			.word	1073778692
	.word	1073779972			.word	1073779972
	.word	1073779976			.word	1073779976
	.word	1073779984			.word	1073779984
	.word	1073778700			.word	1073778700
	.word	5000		      <
	.word	1073780032			.word	1073780032
				      >		.word	5000
	.word	1073779200			.word	1073779200
	.word	1073779460			.word	1073779460
	.word	1073778688			.word	1073778688
	.word	.LANCHOR0			.word	.LANCHOR0
	.word	999		      <
	.word	1073779008			.word	1073779008
				      >		.word	999
				      >		.word	.LC4
	.word	timer				.word	timer
	.word	.LC5		      |		.word	.LC6
	.word	.LC7		      |	.LBE11:
.LBE12:				      |	.LBE10:
.LBE13:				      <
	.cfi_endproc				.cfi_endproc
.LFE2:					.LFE2:
	.size	timer_task, .-timer_t		.size	timer_task, .-timer_t
	.align	2		      |		.align	1
	.global	timer_init			.global	timer_init
				      >		.syntax unified
	.code	16				.code	16
	.thumb_func				.thumb_func
				      >		.fpu softvfp
	.type	timer_init, %function		.type	timer_init, %function
timer_init:				timer_init:
.LFB3:					.LFB3:
	.loc 1 102 0				.loc 1 102 0
	.cfi_startproc				.cfi_startproc
	@ args = 0, pretend = 0, fram		@ args = 0, pretend = 0, fram
	@ frame_needed = 0, uses_anon		@ frame_needed = 0, uses_anon
	push	{lr}				push	{lr}
	.cfi_def_cfa_offset 4			.cfi_def_cfa_offset 4
	.cfi_offset 14, -4			.cfi_offset 14, -4
	sub	sp, sp, #12			sub	sp, sp, #12
	.cfi_def_cfa_offset 16			.cfi_def_cfa_offset 16
.LVL26:					.LVL26:
	.loc 1 106 0				.loc 1 106 0
	ldr	r3, .L23	      |		ldr	r3, .L25
	movs	r2, #1				movs	r2, #1
	rsbs	r2, r2, #0			rsbs	r2, r2, #0
	str	r2, [r3]			str	r2, [r3]
.LVL27:					.LVL27:
	str	r2, [r3, #12]			str	r2, [r3, #12]
.LVL28:					.LVL28:
	str	r2, [r3, #24]			str	r2, [r3, #24]
.LVL29:					.LVL29:
	str	r2, [r3, #36]			str	r2, [r3, #36]
.LVL30:					.LVL30:
	.loc 1 108 0				.loc 1 108 0
	movs	r3, #128			movs	r3, #128
	lsls	r3, r3, #3			lsls	r3, r3, #3
	str	r3, [sp]			str	r3, [sp]
	movs	r3, #0				movs	r3, #0
	ldr	r2, .L23+4	      |		ldr	r2, .L25+4
	ldr	r1, .L23+8	      |		ldr	r1, .L25+8
	movs	r0, #2				movs	r0, #2
	bl	start				bl	start
.LVL31:					.LVL31:
	.loc 1 109 0				.loc 1 109 0
	add	sp, sp, #12			add	sp, sp, #12
	@ sp needed				@ sp needed
	pop	{pc}				pop	{pc}
.L24:				      |	.L26:
	.align	2				.align	2
.L23:				      |	.L25:
	.word	timer				.word	timer
	.word	timer_task			.word	timer_task
	.word	.LC11				.word	.LC11
	.cfi_endproc				.cfi_endproc
.LFE3:					.LFE3:
	.size	timer_init, .-timer_i		.size	timer_init, .-timer_i
	.global	__aeabi_idiv			.global	__aeabi_idiv
	.align	2		      |		.align	1
	.global	delay				.global	delay
				      >		.syntax unified
	.code	16				.code	16
	.thumb_func				.thumb_func
				      >		.fpu softvfp
	.type	delay, %function		.type	delay, %function
delay:					delay:
.LFB4:					.LFB4:
	.loc 1 111 0				.loc 1 111 0
	.cfi_startproc				.cfi_startproc
	@ args = 0, pretend = 0, fram		@ args = 0, pretend = 0, fram
	@ frame_needed = 0, uses_anon		@ frame_needed = 0, uses_anon
.LVL32:					.LVL32:
	push	{lr}				push	{lr}
	.cfi_def_cfa_offset 4			.cfi_def_cfa_offset 4
	.cfi_offset 14, -4			.cfi_offset 14, -4
	sub	sp, sp, #20			sub	sp, sp, #20
	.cfi_def_cfa_offset 24			.cfi_def_cfa_offset 24
	.loc 1 113 0				.loc 1 113 0
	movs	r3, #3				movs	r3, #3
	mov	r2, sp				mov	r2, sp
	strh	r3, [r2]			strh	r3, [r2]
	.loc 1 114 0				.loc 1 114 0
	movs	r1, #250			movs	r1, #250
	lsls	r1, r1, #2			lsls	r1, r1, #2
	bl	__aeabi_idiv			bl	__aeabi_idiv
.LVL33:					.LVL33:
	str	r0, [sp, #4]			str	r0, [sp, #4]
	.loc 1 115 0				.loc 1 115 0
	movs	r3, #0				movs	r3, #0
	str	r3, [sp, #8]			str	r3, [sp, #8]
	.loc 1 116 0				.loc 1 116 0
	mov	r1, sp				mov	r1, sp
	movs	r0, #2				movs	r0, #2
	bl	sendrec				bl	sendrec
.LVL34:					.LVL34:
	.loc 1 117 0				.loc 1 117 0
	mov	r3, sp				mov	r3, sp
	ldrh	r3, [r3]			ldrh	r3, [r3]
	cmp	r3, #4				cmp	r3, #4
	beq	.L25		      |		beq	.L27
	.loc 1 118 0				.loc 1 118 0
	ldr	r0, .L27	      |		ldr	r0, .L29
	bl	panic				bl	panic
.LVL35:					.LVL35:
.L25:				      |	.L27:
	.loc 1 119 0				.loc 1 119 0
	add	sp, sp, #20			add	sp, sp, #20
	@ sp needed				@ sp needed
	pop	{pc}				pop	{pc}
.L28:				      |	.L30:
	.align	2				.align	2
.L27:				      |	.L29:
	.word	.LC13				.word	.LC13
	.cfi_endproc				.cfi_endproc
.LFE4:					.LFE4:
	.size	delay, .-delay			.size	delay, .-delay
	.comm	timer,48,4			.comm	timer,48,4
				      >		.bss
				      >		.align	2
				      >		.set	.LANCHOR0,. + 0
				      >		.type	millis, %object
				      >		.size	millis, 4
				      >	millis:
				      >		.space	4
	.section	.rodata.str1.		.section	.rodata.str1.
	.align	2				.align	2
.LC5:				      |	.LC4:
	.ascii	"Timer got bad messag		.ascii	"Timer got bad messag
	.space	2				.space	2
.LC7:				      |	.LC6:
	.ascii	"Too many timers\000"		.ascii	"Too many timers\000"
.LC11:					.LC11:
	.ascii	"Timer\000"			.ascii	"Timer\000"
	.space	2				.space	2
.LC13:					.LC13:
	.ascii	"delay got bad reply\		.ascii	"delay got bad reply\
	.bss			      <
	.align	2		      <
	.set	.LANCHOR0,. + 0	      <
	.type	millis, %object	      <
	.size	millis, 4	      <
millis:				      <
	.space	4		      <
	.text					.text
.Letext0:				.Letext0:
	.file 2 "phos.h"			.file 2 "phos.h"
	.file 3 "hardware.h"			.file 3 "hardware.h"
